package com.yjhb.android.sbz.v2.mvp

import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.JSONObject
import com.yjhb.android.sbz.entity.Task
import com.yjhb.android.sbz.entity.TaskInfo
import com.yjhb.android.sbz.entity.UserInfo
import com.yjhb.android.sbz.v2.entity.VipConfig
import com.jojo.android.zxlib.entity.Result
import io.reactivex.Observable
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
import retrofit2.http.Query
import java.math.BigDecimal
import java.util.*

/**
 *  创建者 zx
 *  创建时间 2021/4/12 16:49
 */
interface V2ServiceApi {


    /**
     * 获取首页快审列表
     *
     * @return
     */
    @GET("task/v2/fastList")
    fun getFastList(@Query("current") current: Int, @Query("size") size: Int): Observable<Result<List<TaskInfo>>>


    /**
     * 获取首页快审列表
     *
     * @return
     */
    @GET("task/v2/homeList")
    fun getHomeRecommendList(@Query("current") current: Int, @Query("size") size: Int): Observable<Result<List<TaskInfo>>>

    /**
     * 获取视频配置
     */
    @GET("task/video/config")
    fun getVideoConfig(): Observable<Result<JSONObject>>

    @GET("task/video/finishWatch")
    fun getVideoReward(): Observable<Result<Int>>

    /**
     * 分享链接
     */
    @GET("user/getShareUrl")
    fun getShareUrl(): Observable<Result<String>>

    /**
     * 首页立即赚钱
     */
    @GET("/task/now")
    fun getNowTask(): Observable<Result<ArrayList<Task>>>

    /**
     * 拉新用户奖励
     */
    @GET("/user/newUserReward")
    fun newUserReward(): Observable<Result<Long>>

    /**
     * 拉新用户奖励
     */
    @GET("/user/getNewUserReward")
    fun getNewUserReward(): Observable<Result<BigDecimal>>

    /**
    系统配置
    1 任务大奖 -> 规则 TaskRule
    1 任务大奖 -> 赚钱奖励 TaskReward
    1 发布/管理任务 --> 发布 --> 发布规则  PublicRule
    1 发布/管理任务 --> 发布 --> 下载软件 -> 提示 PublicRewardRule
    1 推广奖励 --> 上期榜单 --> 赚钱奖励 OldTaskReward
    1 推广奖励 --> 上期榜单 --> 游戏奖励 OldGameReward
    1 推广奖励 --> 上期榜单 --> 推广奖励 OldAgentReward
    1 我的 --> 开通会员 MemberTab
    1 任务大奖 --> 游戏奖励 GameReward
    1 推广奖励 --> 裂变奖励 FriendStageReward
    1 推广奖励 --> 推广奖励 AgentReward
    1 发布/管理任务 -> 推荐 ->首页推荐       TaskFlushRule
    1 推广大奖 -> 规则  AgentRule
    1 裂变大奖 -> 规则  FriendStageRule

     */
    @GET("user/getSystemConfig/{type}")
    fun getSystemConfig(@Path("type") type: String): Observable<Result<JSON>>


    /**
     * 获取VIP配置数据
     */
    @GET("user/getUserVipConfig")
    fun getVipConfigList(): Observable<Result<VipConfig>>


    /**
     * 获取排行数据
     *  @param rankType : 1、推广；2、悬赏；3、游戏；
     * @param rankPeriod : 排行榜期数：1、本期；2、上期
     */
    @GET("user/newRank")
    fun getNewRank(@Query("rankType") rankType: String,
                   @Query("rankPeriod ") rankPeriod: Int): Observable<Result<JSONObject>>

    /**
     * 获取OSS token
     */
    @POST("user/getUploadImageSTS")
    fun getOssToken(): Observable<Result<String>>


    /**
     * 登录时首先验证该用户是否绑定手机号
     * @param code  微信code
     */
    @POST("user/verifyBindPhone")
    fun verifyBindPhone(@Query("code") code: String): Observable<Result<JSONObject>>

    /**
     * 如果已绑定手机号 就直接调用登录接口
     * @param openid  微信openid
     * @param deviceId 设备号
     */
    @POST("user/wxLoginNew")
    fun wxLoginNew(@Query("openid") openid: String,
                   @Query("deviceId") deviceId: String): Observable<Result<UserInfo>>

    /**
     * 如果没有手机号 就跳转界面输入手机号 发送验证码接口
     * @param tel  手机号
     */
    @POST("user/sendPhoneVerifyCode")
    fun sendPhoneVerifyCode(@Query("tel") tel: String): Observable<Result<Any>>

    /**
     * 收到验证码，绑定手机号，同步数据
     * @param openid  微信openid
     * @param phone 手机号
     * @param code 验证码
     */
    @POST("user/bindPhoneAndSyncData")
    fun bindPhoneAndSyncData(@Query("openid") openid: String,
                             @Query("phone") phone: String,
                             @Query("code") code: String): Observable<Result<Boolean>>


}